#include <stdio.h>
#include <stdbool.h>
#define ElementType int
#define Max 100

typedef struct
{
    ElementType arr[Max];
    int len;
}Stack;

void InitStack(Stack *s)
{
    for(int i = 0; i < Max; i++)
    {
        s->arr[i] = 0;
    }
    s->len = 0;
}

void Travel(Stack *s)
{
    for(int i = 0; i < s->len; i++)
    {
        printf("%d ",s->arr[i]);
    }
    printf("\n");
}

void Push(Stack *s,ElementType element)
{
    if(s->len >= Max)
    {
        printf("栈满!\n");
        return;
    }
    s->arr[s->len++] = element;
}

void Pop(Stack *s)
{
    if(s->len == 0)
    {
        printf("栈空!\n");
        return;
    }
    s->len--;
}

ElementType* GetPop(Stack *s)
{
    if(s->len == 0)
    {
        printf("栈空!\n");
        return NULL;
    }
    return &s->arr[s->len - 1];
}

bool IsStackEmpty(Stack *s)
{
    return s->len == 0;
}

int main()
{
    Stack s;
    InitStack(&s);
    // for(int i = 1; i <= 10; i++)
    // {
    //     Push(&s,i);
    // }
    // Travel(&s);
    // while(IsStackEmpty(&s) == false)
    // {
    //     printf("%d ",*GetPop(&s));
    //     Pop(&s);
    // }
    // printf("\n");
    int num = 0;
    int n = 0;
    printf("输入你要转化的数:");
    scanf("%d",&num);
    printf("输入你要转化的进制数:");
    scanf("%d",&n);

    while(num != 0)
    {
        int temp = num % n;
        if(temp < 10)
        {
            temp = temp + '0';
        }
        if(temp >= 10)
        {
            temp = temp + 'A' - 10;
        }
        Push(&s,temp);
        num = num / n;
    }
    while(IsStackEmpty(&s) == false)
    {
        printf("%c",*GetPop(&s));
        Pop(&s);
    }
    printf("\n");

    return 0;
}